﻿using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using Newtonsoft.Json;
using AsTekMobile.dataService;

namespace AsTekMobile
{
    public enum EvrakTipleri : byte
    {

        ToptanAlisIrsaliyesi,
        PerakendeAlisIrsaliyesi,

        ToptanAlisIadeIrsaliyesi,
        PerakendeAlisIadeIrsaliyesi,

        ToptanSatisIrsaliyesi,
        PerakendeSatisIrsaliyesi,

        ToptanSatisIadeIrsaliyesi,
        PerakendeSatisIadeIrsaliyesi,

        DepoSevkGiris,
        DepoSevkCikis,

        AlinanSiparis,
        VerilenSiparis,
        SubeSiparis,

        ToptanSatisFaturasi,
        PerakendeSatisFaturasi,

        ToptanSatisIadeFaturasi,
        PerakendeSatisIadeFaturasi,

        Tahsilat,
        HizmetFaturasi
    }

    public class Database
    {
        MobileService SoapService = null;
        private Database()
        {
            SoapService = new MobileService();
            SoapService.Url = Program.Session[Settings.ServiceUrl].ToString();
        }
        private static Database _ctor = null;
        public static Database ctor
        {
            get
            {
                if (_ctor == null)
                {
                    _ctor = new Database();
                }
                return _ctor;
            }
        }
        public List<Marka> Markalar
        {
            get
            {
                List<Marka> _result = null;
                var markalar = Hafiza.Ctor.Get<List<Marka>>("Markalar");
                if (markalar != null)
                {
                    _result = markalar;
                }
                else
                {
                    string data = SoapService.MarkaList();
                    if (!string.IsNullOrEmpty(data) && data != "ERROR")
                    {
                        _result = JsonConvert.DeserializeObject<List<Marka>>(data);
                        Hafiza.Ctor.Set("Markalar", _result);
                    }
                }
                if (_result == null)
                    _result = new List<Marka>();
                return _result;
            }
        }
        public List<User> Kullanicilar
        {
            get
            {
                List<User> _result = null;
                var kullanici = Hafiza.Ctor.Get<List<User>>("Kullanicilar");
                if (kullanici != null)
                {
                    _result = kullanici;
                }
                else
                {
                    string data = SoapService.UserList();
                    if (!string.IsNullOrEmpty(data) && data != "ERROR")
                    {
                        _result = JsonConvert.DeserializeObject<List<User>>(data);
                        Hafiza.Ctor.Set("Kullanicilar", _result);
                    }
                }
                if (_result == null)
                    _result = new List<User>();
                return _result;
            }
        }
        public List<Depo> Depolar
        {
            get
            {
                List<Depo> _result = null;
                var cacheObject = Hafiza.Ctor.Get<List<Depo>>("Depolar");
                if (cacheObject != null)
                {
                    _result = cacheObject;
                }
                else
                {
                    string data = SoapService.DepoList();
                    if (!string.IsNullOrEmpty(data) && data != "ERROR")
                    {
                        _result = JsonConvert.DeserializeObject<List<Depo>>(data);
                        Hafiza.Ctor.Set("Depolar", _result);
                    }
                }
                if (_result == null)
                    _result = new List<Depo>();
                return _result;
            }
        }
        public List<Montaj> Montajlar
        {
            get
            {
                List<Montaj> _result = null;
                var cacheObject = Hafiza.Ctor.Get<List<Montaj>>("Montajlar");
                if (cacheObject != null)
                {
                    _result = cacheObject;
                }
                else
                {
                    string data = SoapService.MontajListesi(0, Cevir.Parse<int>(Program.Session[Settings.TeknikServisID]));
                    if (!string.IsNullOrEmpty(data) && data != "ERROR")
                    {
                        _result = JsonConvert.DeserializeObject<List<Montaj>>(data);
                        Hafiza.Ctor.Set("Montajlar", _result);
                    }
                }
                if (_result == null)
                    _result = new List<Montaj>();
                return _result;
            }
        }
        public List<Service> Servisler
        {
            get
            {
                List<Service> _result = null;
                var cacheObject = Hafiza.Ctor.Get<List<Service>>("Servisler");
                if (cacheObject != null)
                {
                    _result = cacheObject;
                }
                else
                {
                    string data = SoapService.ServisListesi("Açık", Cevir.Parse<int>(Program.Session[Settings.TeknikServisID]), DateTime.Now);
                    if (!string.IsNullOrEmpty(data) && data != "ERROR")
                    {
                        _result = JsonConvert.DeserializeObject<List<Service>>(data);
                        Hafiza.Ctor.Set("Servisler", _result);
                    }
                }
                if (_result == null)
                    _result = new List<Service>();
                return _result;
            }
        }
        public List<Firmware> FirmwareTanimlari
        {
            get
            {
                List<Firmware> _result = null;
                var cacheObject = Hafiza.Ctor.Get<List<Firmware>>("FirmwareTanimlari");
                if (cacheObject != null)
                {
                    _result = cacheObject;
                }
                else
                {
                    string data = SoapService.FirmwareList();
                    if (!string.IsNullOrEmpty(data) && data != "ERROR")
                    {
                        _result = JsonConvert.DeserializeObject<List<Firmware>>(data);
                        Hafiza.Ctor.Set("FirmwareTanimlari", _result);
                    }
                }
                if (_result == null)
                    _result = new List<Firmware>();
                return _result;
            }
        }
        public List<Sistem> SistemTanimlari
        {
            get
            {
                List<Sistem> _result = null;
                var cacheObject = Hafiza.Ctor.Get<List<Sistem>>("SistemTanimlari");
                if (cacheObject != null)
                {
                    _result = cacheObject;
                }
                else
                {
                    string data = SoapService.SistemList();
                    if (!string.IsNullOrEmpty(data) && data != "ERROR")
                    {
                        _result = JsonConvert.DeserializeObject<List<Sistem>>(data);
                        Hafiza.Ctor.Set("SistemTanimlari", _result);
                    }
                }
                if (_result == null)
                    _result = new List<Sistem>();
                return _result;
            }
        }
        public List<EkOzellik> OzellikTanimlari
        {
            get
            {
                List<EkOzellik> _result = null;
                var cacheObject = Hafiza.Ctor.Get<List<EkOzellik>>("OzellikTanimlari");
                if (cacheObject != null)
                {
                    _result = cacheObject;
                }
                else
                {
                    string data = SoapService.EkOzellikList();
                    if (!string.IsNullOrEmpty(data) && data != "ERROR")
                    {
                        _result = JsonConvert.DeserializeObject<List<EkOzellik>>(data);
                        Hafiza.Ctor.Set("OzellikTanimlari", _result);
                    }
                }
                if (_result == null)
                    _result = new List<EkOzellik>();
                return _result;
            }
        }
        public List<AracOzellik> AracOzellikleri(int aracID)
        {
            List<AracOzellik> _result = null;
            string data = SoapService.AracEkOzellikList(aracID);
            if (!string.IsNullOrEmpty(data) && data != "ERROR")
            {
                _result = JsonConvert.DeserializeObject<List<AracOzellik>>(data);
            }

            if (_result == null)
                _result = new List<AracOzellik>();
            return _result;
        }
        public List<SorunTanim> SorunTanimlari
        {
            get
            {
                List<SorunTanim> _result = null;
                var cacheObject = Hafiza.Ctor.Get<List<SorunTanim>>("SorunTanimlari");
                if (cacheObject != null)
                {
                    _result = cacheObject;
                }
                else
                {
                    string data = SoapService.ServisSorunList();
                    if (!string.IsNullOrEmpty(data) && data != "ERROR")
                    {
                        _result = JsonConvert.DeserializeObject<List<SorunTanim>>(data);
                        Hafiza.Ctor.Set("SorunTanimlari", _result);
                    }
                }
                if (_result == null)
                    _result = new List<SorunTanim>();
                return _result;
            }
        }
        public List<AracSorunBilgi> AracSorunlari(int hareketID)
        {
            List<AracSorunBilgi> _result = null;
            string data = SoapService.AracSorunBilgileri(hareketID);
            if (!string.IsNullOrEmpty(data) && data != "ERROR")
            {
                _result = JsonConvert.DeserializeObject<List<AracSorunBilgi>>(data);
            }

            if (_result == null)
                _result = new List<AracSorunBilgi>();
            return _result;
        }
        public List<KontrolTanim> KontrolTanimlari
        {
            get
            {
                List<KontrolTanim> _result = null;
                var cacheObject = Hafiza.Ctor.Get<List<KontrolTanim>>("KontrolTanimlari");
                if (cacheObject != null)
                {
                    _result = cacheObject;
                }
                else
                {
                    string data = SoapService.KontrolTanimList();
                    if (!string.IsNullOrEmpty(data) && data != "ERROR")
                    {
                        _result = JsonConvert.DeserializeObject<List<KontrolTanim>>(data);
                        Hafiza.Ctor.Set("KontrolTanimlari", _result);
                    }
                }
                if (_result == null)
                    _result = new List<KontrolTanim>();
                return _result;
            }
        }
        public List<AracKontrolBilgi> AracKontrolBilgileri(int hareketID)
        {
            List<AracKontrolBilgi> _result = null;
            string data = SoapService.AracKontrolBilgileri(hareketID);
            if (!string.IsNullOrEmpty(data) && data != "ERROR")
            {
                _result = JsonConvert.DeserializeObject<List<AracKontrolBilgi>>(data);
            }
            if (_result == null)
                _result = new List<AracKontrolBilgi>();
            return _result;
        }
        public CariBilgi CariBilgileri(int cariID)
        {
            CariBilgi _result = null;
            string data = SoapService.CariBilgi(cariID);
            if (!string.IsNullOrEmpty(data) && data != "ERROR")
            {
                _result = JsonConvert.DeserializeObject<CariBilgi>(data);
            }
            if (_result == null)
                _result = new CariBilgi();
            return _result;
        }
        public CariBilgi CariBilgileri2(string cariKodu)
        {
            CariBilgi _result = null;
            string data = SoapService.CariBilgi2(cariKodu);
            if (!string.IsNullOrEmpty(data) && data != "ERROR")
            {
                _result = JsonConvert.DeserializeObject<CariBilgi>(data);
            }
            if (_result == null)
                _result = new CariBilgi();
            return _result;
        }
        public List<Stok> Stoklar
        {
            get
            {
                List<Stok> _result = null;
                var cacheObject = Hafiza.Ctor.Get<List<Stok>>("Stoklar");
                if (cacheObject != null)
                {
                    _result = cacheObject;
                }
                else
                {
                    string data = SoapService.UrunListesi();
                    if (!string.IsNullOrEmpty(data) && data != "ERROR")
                    {
                        _result = JsonConvert.DeserializeObject<List<Stok>>(data);
                        Hafiza.Ctor.Set("Stoklar", _result);
                    }
                }
                if (_result == null)
                    _result = new List<Stok>();
                return _result;
            }
        }
        public Stok Urunbul(string kod)
        {
            Stok sonuc = null;
            string data = SoapService.UrunBilgileri(kod);
            if (!string.IsNullOrEmpty(data) && data != "ERROR")
            {
                sonuc = JsonConvert.DeserializeObject<Stok>(data);
            }
            return sonuc;
        }
        public List<ServisMerkezi> ServisMerkezleri
        {
            get
            {
                List<ServisMerkezi> _result = null;
                var cacheObject = Hafiza.Ctor.Get<List<ServisMerkezi>>("ServisMerkezleri");
                if (cacheObject != null)
                {
                    _result = cacheObject;
                }
                else
                {
                    string data = SoapService.ServisMerkezleri();
                    if (!string.IsNullOrEmpty(data) && data != "ERROR")
                    {
                        _result = JsonConvert.DeserializeObject<List<ServisMerkezi>>(data);
                        Hafiza.Ctor.Set("ServisMerkezleri", _result);
                    }
                }
                if (_result == null)
                    _result = new List<ServisMerkezi>();
                return _result;
            }
        }
        public List<HubYeri> AracHubYerleri(int aracID)
        {
            List<HubYeri> _result = null;
            string data = SoapService.AracHubYerleri(aracID);
            if (!string.IsNullOrEmpty(data) && data != "ERROR")
            {
                _result = JsonConvert.DeserializeObject<List<HubYeri>>(data);
            }

            if (_result == null)
                _result = new List<HubYeri>();
            return _result;
        }
        public List<KapamaSebep> KapamaSebepleri
        {
            get
            {
                List<KapamaSebep> _result = null;
                var cacheObject = Hafiza.Ctor.Get<List<KapamaSebep>>("KapamaSebepleri");
                if (cacheObject != null)
                {
                    _result = cacheObject;
                }
                else
                {
                    string data = SoapService.KapamaSebepList();
                    if (!string.IsNullOrEmpty(data) && data != "ERROR")
                    {
                        _result = JsonConvert.DeserializeObject<List<KapamaSebep>>(data);
                        Hafiza.Ctor.Set("KapamaSebepleri", _result);
                    }
                }
                if (_result == null)
                    _result = new List<KapamaSebep>();
                return _result;
            }
        }
        public List<Doviz> Dovizler
        {
            get
            {
                List<Doviz> _result = null;
                var cacheObject = Hafiza.Ctor.Get<List<Doviz>>("Dovizler");
                if (cacheObject != null)
                {
                    _result = cacheObject;
                }
                else
                {
                    string data = SoapService.DovizKurlari();
                    if (!string.IsNullOrEmpty(data) && data != "ERROR")
                    {
                        _result = JsonConvert.DeserializeObject<List<Doviz>>(data);
                        Hafiza.Ctor.Set("Dovizler", _result);
                    }
                }
                if (_result == null)
                    _result = new List<Doviz>();
                return _result;
            }
        }
        public bool SaveEvrak(Evrak evr)
        {
            bool sonuc = false;
            try
            {
                string data = JsonConvert.SerializeObject(evr);
                string result = SoapService.EvrakEkle(data);
                if (result != "ERROR" || result != "FORMAT HATALI")
                {
                    sonuc = true;
                }
            }
            catch (Exception ex)
            {
                ErrorMgr.Opps(ex);
            }
            return sonuc;
        }
        public bool SaveAllEvrak(Evrak[] evrs)
        {
            bool sonuc = false;
            try
            {
                string data = JsonConvert.SerializeObject(evrs);
                string result = SoapService.HizmetFatEkle(data);
                if (result != "ERROR" || result != "FORMAT HATALI")
                {
                    sonuc = true;
                }
            }
            catch (Exception ex)
            {
                ErrorMgr.Opps(ex);
            }
            return sonuc;
        }
        public bool SaveMontaj(Montaj mnt)
        {
            bool sonuc = false;
            try
            {
                string data = JsonConvert.SerializeObject(mnt);
                sonuc = SoapService.MontajEkle(data);
            }
            catch (Exception ex)
            {
                ErrorMgr.Opps(ex);
            }
            return sonuc;
        }
        public bool SaveServis(Service srv)
        {
            bool sonuc = false;
            try
            {
                string data = JsonConvert.SerializeObject(srv);
                sonuc = SoapService.ServisEkle(data);
            }
            catch (Exception ex)
            {
                ErrorMgr.Opps(ex);
            }
            return sonuc;
        }
        public List<CariBilgi> FirmaListesi
        {
            get
            {
                List<CariBilgi> _result = null;
                var cacheObject = Hafiza.Ctor.Get<List<CariBilgi>>("FirmaListesi");
                if (cacheObject != null)
                {
                    _result = cacheObject;
                }
                else
                {
                    string data = SoapService.FirmaListe();
                    if (!string.IsNullOrEmpty(data) && data != "ERROR")
                    {
                        _result = JsonConvert.DeserializeObject<List<CariBilgi>>(data);
                        Hafiza.Ctor.Set("FirmaListesi", _result);
                    }
                }
                if (_result == null)
                    _result = new List<CariBilgi>();
                return _result;
            }
        }
        public List<CariBilgi> AnaCariListe
        {
            get
            {
                List<CariBilgi> _result = null;
                var cacheObject = Hafiza.Ctor.Get<List<CariBilgi>>("AnaCariListe");
                if (cacheObject != null)
                {
                    _result = cacheObject;
                }
                else
                {
                    string data = SoapService.AnaCariListe();
                    if (!string.IsNullOrEmpty(data) && data != "ERROR")
                    {
                        _result = JsonConvert.DeserializeObject<List<CariBilgi>>(data);
                        Hafiza.Ctor.Set("AnaCariListe", _result);
                    }
                }
                if (_result == null)
                    _result = new List<CariBilgi>();
                return _result;
            }
        }
        public string State()
        {
            try
            {
                if (SoapService.CheckStatus())
                    return "Online";
            }
            catch (Exception)
            {
            }
            return "Offline";
        }
        public int EvrakSira(EvrakTipleri cins, string seri, int sira)
        {
            try
            {
                string sonuc = SoapService.EvrakNoKontrol((byte)cins, seri, sira);
                if (sonuc == "true")
                {
                    return sira;
                }
                else
                {
                    return Cevir.Parse<int>(sonuc);
                }
            }
            catch (Exception)
            {
                return -1;
            }
        }
        public AracBilgi AracBilgileri(string aracKodu)
        {
            AracBilgi _result = null;
            string data = SoapService.AracBilgileri(aracKodu);
            if (!string.IsNullOrEmpty(data) && data != "ERROR")
            {
                _result = JsonConvert.DeserializeObject<AracBilgi>(data);
            }
            return _result;
        }
        public bool SaveArac(AracBilgi arc)
        {
            bool sonuc = false;
            try
            {
                string data = JsonConvert.SerializeObject(arc);
                sonuc = SoapService.AracBilgiGuncelle(data);
            }
            catch (Exception ex)
            {
                ErrorMgr.Opps(ex);
            }
            return sonuc;
        }
        public List<HizmetKarti> HizmetKartlari
        {
            get
            {
                List<HizmetKarti> _result = null;
                var cacheObject = Hafiza.Ctor.Get<List<HizmetKarti>>("HizmetKartlari");
                if (cacheObject != null)
                {
                    _result = cacheObject;
                }
                else
                {
                    string data = SoapService.HizmetKartlari();
                    if (!string.IsNullOrEmpty(data) && data != "ERROR")
                    {
                        _result = JsonConvert.DeserializeObject<List<HizmetKarti>>(data);
                        Hafiza.Ctor.Set("HizmetKartlari", _result);
                    }
                }
                if (_result == null)
                    _result = new List<HizmetKarti>();
                return _result;
            }
        }
        public bool SaveHizmetFat(Evrak evr)
        {
            bool sonuc = false;
            try
            {
                string data = JsonConvert.SerializeObject(evr);
                string result = SoapService.HizmetFatEkle2(data);
                if (result != "ERROR" || result != "FORMAT HATALI")
                {
                    sonuc = true;
                }
            }
            catch (Exception ex)
            {
                ErrorMgr.Opps(ex);
            }
            return sonuc;
        }
        public string PrintFat(string seri, int sira,byte faturatip,bool cariBilgiYaz)
        {
            string sonuc = "";
            try
            {
                string result = SoapService.HizmetFaturaBilgi(seri, sira, 0, faturatip, cariBilgiYaz);
                if (result != "EVRAK YOK")
                {
                    sonuc = result;
                }
            }
            catch (Exception ex)
            {
                ErrorMgr.Opps(ex);
            }
            return sonuc;
        }
        public List<ServisFatura> FaturaListesi(int servisID)
        {
            List<ServisFatura> _result = null;
            string data = SoapService.ServisBagliEvraklar(servisID);
            if (!string.IsNullOrEmpty(data) && data != "ERROR")
            {
                _result = JsonConvert.DeserializeObject<List<ServisFatura>>(data);
            }

            if (_result == null)
                _result = new List<ServisFatura>();
            return _result;
        }
    }

    public class ServisFatura
    {
        public string EvrakTipi { get; set; }
        public string EvrakSeri { get; set; }
        public int EvrakSira { get; set; }
    }

    public class Evrak
    {
        private bool _evrakSeriGirildi = false;
        private List<HareketBilgileri> _rows = new List<HareketBilgileri>();
        public DateTime Tarih { get; set; }
        public string BelgeNo { get; set; }
        public string Seri { get; set; }
        public int Sira { get; set; }
        public EvrakTipleri EvrakCinsi { get; set; }
        public string CariKodu { get; set; }
        public string SrmMerkezKodu { get; set; }
        public string PlasiyerKodu { get; set; }
        public string MikroKullanici { get; set; }
        public int GirisDepoNo { get; set; }
        public int CikisDepoNo { get; set; }
        public int FirmaNo { get; set; }
        public int SubeNo { get; set; }
        public string AracKodu { get; set; }
        public List<HareketBilgileri> Rows { get { return _rows; } }
        public bool EvrakSeriGirildi { get { return _evrakSeriGirildi; } set { _evrakSeriGirildi = value; } }
        public int ServisID { get; set; }
        public int DbNo { get; set; }
    }

    public class HareketBilgileri
    {
        public int Id { get; set; }
        public int Satir { get; set; }
        public string StokKodu { get; set; }
        public string StokAdi { get; set; }
        public decimal Miktar { get; set; }
        public decimal Fiyat { get; set; }
        public decimal Isk1Tutar { get; set; }
        public decimal Isk2Tutar { get; set; }
        public decimal Isk3Tutar { get; set; }
        public decimal Isk4Tutar { get; set; }
        public decimal Isk5Tutar { get; set; }
        public decimal BurutTutar { get; set; }
        public int KdvSira { get; set; }
        public decimal KdvOrani { get; set; }
        public decimal KdvTutari { get; set; }
        public string Barkod { get; set; }
        public int SipDbcNo { get; set; }
        public int SipRecNo { get; set; }
        public string[] SeriNolar { get; set; }
    }

    public class User
    {
        public int ID { get; set; }
        public string Adi { get; set; }
        public string Sifre { get; set; }
        public string SrmMerkezi { get; set; }
        public string Plasiyer { get; set; }
        public string MikroKullanici { get; set; }
        public string FirmaNo { get; set; }
        public string SubeNo { get; set; }
        public int DepoNo { get; set; }
        public string KullanilabilirDepolar { get; set; }
        public string EvrakSeri { get; set; }
        public int GuncellemeSuresi { get; set; }
        public int ArizaliDepoNo { get; set; }
        public int DbNo { get; set; }
    }

    public class Depo
    {
        public int ID { get; set; }
        public int No { get; set; }
        public string Adi { get; set; }
    }

    public class Doviz
    {
        public int No { get; set; }
        public string Adi { get; set; }
        public double Kur { get; set; }
    }

    public class KapamaSebep
    {
        public int ID { get; set; }
        public string Adi { get; set; }
    }

    public class Montaj
    {
        private List<AracOzellik> _ekozellikler = new List<AracOzellik>();
        private List<HubYeri> _hubyerleri = new List<HubYeri>();
        public int ID { get; set; }
        public DateTime Tarih { get; set; }
        public string Firma { get; set; }
        public string Grup { get; set; }
        public string Plaka { get; set; }
        public int AracID { get; set; }
        public string Adres { get; set; }
        public string Musteri { get; set; }
        public string Telefon { get; set; }
        public int MarkaID { get; set; }
        public int UretimYili { get; set; }
        public string SasiNo { get; set; }
        public string MontajYeri { get; set; }
        public int KoltukAdet { get; set; }
        public int SistemID { get; set; }
        public DateTime MontajTarihi { get; set; }
        public int FirmwareID { get; set; }
        public string Servis { get; set; }
        public string Not { get; set; }
        public string TeslimAlan { get; set; }
        public List<AracOzellik> EkOzellikler { get { return _ekozellikler; } }
        public List<HubYeri> HubYerleri { get { return _hubyerleri; } }
        public int TeknisyenID { get; set; }
        public int KapamaNedenID { get; set; }
        public string AracKodu { get; set; }
    }

    public class Service
    {
        private List<AracKontrolBilgi> _kontroller = new List<AracKontrolBilgi>();
        private List<AracSorunBilgi> _sorunlar = new List<AracSorunBilgi>();

        public DateTime HareketTarihi { get; set; }
        public string Sorunlar { get; set; }
        public string Plaka { get; set; }
        public string Grup { get; set; }
        public string Firma { get; set; }

        public string Servis { get; set; }
        public int ID { get; set; }
        public DateTime MontajTarihi { get; set; }
        public string Musteri { get; set; }
        public string Telefon { get; set; }
        public string HizmetYeri { get; set; }
        public int ServisID { get; set; }
        public string Sistem { get; set; }
        public List<AracKontrolBilgi> Kontroller { get { return _kontroller; } }
        public List<AracSorunBilgi> Sorunlari { get { return _sorunlar; } }
        public string Notlar { get; set; }
        public int TeknisyenID { get; set; }
        public int KapamaNedenID { get; set; }
        public string AracKodu { get; set; }
        public string FirmaKodu { get; set; }
        public int SozlesmeVar { get; set; }
        public int GarantiSure { get; set; }
        public DateTime GelisTarihi { get; set; }
    }

    public class ServisMerkezi
    {
        public int ID { get; set; }
        public string Adi { get; set; }
    }

    public class Firmware
    {
        public int ID { get; set; }
        public string Adi { get; set; }
    }

    public class Sistem
    {
        public int ID { get; set; }
        public string Adi { get; set; }
    }

    public class HubYeri
    {
        public int ID { get; set; }
        public int HubKoltukNo { get; set; }
        public int MonitorKoltukNo1 { get; set; }
        public int MonitorKoltukNo2 { get; set; }
        public int MonitorKoltukNo3 { get; set; }
        public int MonitorKoltukNo4 { get; set; }
        public int MonitorKoltukNo5 { get; set; }
        public int MonitorKoltukNo6 { get; set; }
        public int MonitorKoltukNo7 { get; set; }
    }

    public class EkOzellik
    {
        public int ID { get; set; }
        public string Adi { get; set; }
        public bool Zorunlu { get; set; }
    }

    public class AracOzellik
    {
        public int ID { get; set; }
        public int OzellikID { get; set; }
        public string Deger { get; set; }
    }

    public class Marka
    {
        public int ID { get; set; }
        public string MarkaAdi { get; set; }
    }

    public class SorunTanim
    {
        public int ID { get; set; }
        public string SorunTanimi { get; set; }
    }

    public class AracSorunBilgi
    {
        public int ID { get; set; }
        public int SorunID { get; set; }
        public string SorunTanimi { get; set; }
        public byte Tip { get; set; }
        public override string ToString()
        {
            return SorunTanimi;
        }
    }

    public class KontrolTanim
    {
        public int ID { get; set; }
        public string KontrolAdi { get; set; }
    }

    public class AracKontrolBilgi
    {
        public int ID { get; set; }
        public int KontrolID { get; set; }
        public string KontrolAdi { get; set; }
        public byte Deger { get; set; }
        public string SDeger { get; set; }
    }

    public class CariBilgi
    {
        public int ID { get; set; }
        public string CariKodu { get; set; }
        public string CariUnvan1 { get; set; }
        public string CariUnvan2 { get; set; }
        public byte Tipi { get; set; }
        public string AnaCariKodu { get; set; }
        public string Adres { get; set; }
        public string VergiDaire { get; set; }
        public string VergiNo { get; set; }
    }

    public class Stok
    {
        public int ID { get; set; }
        public string Kodu { get; set; }
        public string Adi { get; set; }
        public decimal Fiyat { get; set; }
        public string Doviz { get; set; }
        public int Kdv { get; set; }
        public bool Serinolu { get; set; }
        public string ParcaAciklama { get; set; }
        public decimal KdvOran { get; set; }
        public List<ParcaStok> Parcalar { get; set; }
    }

    public class ParcaStok
    {
        public int ID { get; set; }
        public string Adi { get; set; }
        public double Fiyat { get; set; }
        public byte Doviz { get; set; }
        public string HizmetKodu { get; set; }
    }

    public class AracBilgi
    {
        private List<AracOzellik> _ekozellikler = new List<AracOzellik>();
        private List<HubYeri> _hubyerleri = new List<HubYeri>();
        public int ID { get; set; }
        public string Kodu { get; set; }
        public string AnaCariKodu { get; set; }
        public string AltCariKodu { get; set; }
        public int MarkaID { get; set; }
        public DateTime UretimYili { get; set; }
        public string SasiNo { get; set; }
        public int KoltukSayisi { get; set; }
        public string Plaka { get; set; }
        public int SistemID { get; set; }
        public int FirmwareID { get; set; }
        public string SistemNo { get; set; }
        public List<AracOzellik> EkOzellikler { get { return _ekozellikler; } }
        public List<HubYeri> HubYerleri { get { return _hubyerleri; } }
    }

    public class HizmetKarti
    {
        public int ID { get; set; }
        public string Aciklama { get; set; }
        public string HizmetKodu { get; set; }
        public decimal Fiyati { get; set; }
        public int KdvSira { get; set; }
        public decimal KdvOran { get; set; }
        public bool Sec { get; set; }
    }
}
